#include <iostream>
#include <string>

using namespace std;

bool search_and_replace(string &str, const string &oldsubstr,const string &newsubstr);

int main(){
  string str = "This is a test. So is this.";

  while(search_and_replace(str, "is", "was"))
   cout << str << endl;

  cout << endl;

  string oldstr("So");
  string newstr("So too");
  cout << "Replace 'So' with 'So too'" << endl;
  search_and_replace(str, oldstr, newstr);
  cout << str << endl;

  return 0;
}

bool search_and_replace(string &str, const string &oldsubstr, const string &newsubstr) {
  string::size_type startidx;

  startidx = str.find(oldsubstr);
  if(startidx != string::npos) {
    str.replace(startidx, oldsubstr.size(), newsubstr);
    return true;
  }

  return false;
}

